Data processing machine function indicator



NOV. 10, 1970 w, BEE ETAL DATA PROCESSING MACHINE FUNCTION INDICATOR Filid Jan. 15, 1968 6 Sheets-Sheet 1 1 =30: I -I 5;: 2; :s :2: o;- flfi 35.2 :N mo m om mom 2N ML a 56m I I mmfizzm L r 2 I 503 E E; NFN J I E $102 a 55:8 3 Tim 2 SE 1 8E E E h :1 t $13 2 53 u m INVENTORS MARK W BEE DUNALD .I. LANG Al." 0. SNYDER Mad 5.

AGENT NOV. 10, 1970 M, w 555 ET AL 3,539,996

DATA PROCESSING MACHINE FUNCTION INDICATOR Filed Jan. 15, 1968 6 Sheets-Sheet 5 CAPACITY FIG 4 AT LEAST 92 START MS 10000 worms (FROM 0000255 ADD E 1 MS R1 SET REG SELECT INTERNAL R2 SAR\ T|M|NG W1 A SAR STORE CONTROLS 423W SENSE LINES r2 R2 L /STROBE CPU CYGLES STARTMS SET SAR NOV. 10, 1970 w, 355 ETAL 3,539,996

DATA PROCESSING MACHINE FUNCTION INDICATOR Filed Jan. 15, 1968 e Sheets-Sheet 4 FIG. 6

4011111151; LS 121 15 CORE READ LSAR m T STORE (MWORDS) N 511151 LLNES SET LSAR fi 120 /DR|VE LLNES WRITE j 141 1 g a s 1 142 14 111 ELEC L J 0 sELEc 1 L 10014141111111 R 10 01 11 ADDER 126 1 4 L L 1 REG I R REG 145 1 144 1 BUS TOL I IREADTOL BUS 10 FILL 12 115401011 ii BUS 94111 125 tum w n 1 4 35m m JL FIG.7

CPU CYCLEY CPU CYCLE 2 CPU CYCLE 5 L- 1/214SEC CPU CYCLES 5151 LSAR READ 1114115 11191415111111 (AND 0111514 CPU 11549 LS MEMORY CYCLES MEN CYCLE 1 HEM CYCLE 2 Nov. 10, 1970 M. W. BEE ET AL DATA PROCESSING MACHINE FUNCTION INDICATOR Filed Jan. 15, 1968 6 Sheets-Sheet 5 FIG. 8a FIG. Be

L5 1 TO LS BUFFER R REG CONTROL\ LSAR I LSAR l BACKUP SDR r FIG. 8d BACKUP MS 51 52 P s w STACK a BITS POINTER 34&35 APPLICATION ggmh CC SERIAL NO BACKUP 697,740 34 FILED? FROM LS JANIS, 1968 T0 LS F f 34 RETRY 8 T FIG. 8e FROM Ros ROL Ls F REGEN ERROR POSITIONS (mmsm 90-99 42/ MS PRIOR ART ROSDR REGEN ROSDR DECODER TRIGGER DECODER 25 2s 37 SYSfTERi MCI Mg- A 43 TRIGGER OIR L5 O N 0L SOC ERROR (SET LATCH) RETRY Ms TRIGGER LATCH \28 TR?GDC:ER \39 44 40 2? LOAD ERROR ERROR g Ig WAIT O FUNCT'ON COUNTER m I STATUS FETCH INDICATOR (FLIP-FLOPS) RESET 1 NORMAL (4 B|-STABLE) NOV. 10, 1970 w, 555 ETAL 3,539,996

DATA PROCESSING MACHINE FUNCTION INDICATOR Filed Jan. 15, 1968 6 Sheets-Sheet 6 /ROSDR Posmows 4 6 12 16 i9 28 3* 32 35 4O 44 46474; MW IMV! ZP [2F 12M] TR WSISFIP 1v AL WM UPS; 1

FIGSj 00 UL URPI c5 LX'HRY AD I A8 [B8 53 RC l RETRY K comma 9293 9697 99 CPU MODE RETRY CONTROL RETRY comm RETRY SOURCE SETUP SETUP 0m SAVE DATA DATA DATA MODE r0 A08 comm DESTINATION United States Patent Ofiice 3,539,996 Patented Nov. 10, 1970 3,539,996 DATA PROCESSING MACHINE FUNCTION INDICATOR Mark W. Bee. Hopewell Junction, Donald J. Lang,

Wappingers Falls, and Alan D. Snyder, Hopewell Junction, N.Y., assignors to International Business Machines Corporation, Armonk, N.Y., a corporation of New York Filed Jan. 15, 1968, Ser. No. 697,742 Int. Cl. G061 11/00 US. Cl. 340-1725 5 Claims ABSTRACT OF THE DISCLOSURE BACKGROUND OF THE INVENTION The invention will be described with reference to apparatus embodied in an electronic digital computer containing a read only control storage which controls execution of stored program instructions. However, the invention may be used in data processing machines which do not utilize a read only control storage and in specialpurpose computers which are built specifically to perform only one (or a very limited number of) tasks, and which have a program built into the hardware of the machine.

Electronic digital computers operate upon data in accordance with instructions arranged into a number of programs. Both the data and the instructions are represented by electric signal pulses, each signal being assigned, depending upon its value, either the binary quantity zero (0-bit) or the binary quantity one (l-bit). A plurality of these binary bits (binary digits) are arranged to represent a data word or an instruction word. Data words are processed in the system in accordance with the instruction words; instruction words being executed one at a time in sequence as taken from a program.

Instructions are usually executed as a series of timespaced steps. During the execution of any of these steps, it is possible that there may be a malfunction in the system. Malfunctions, or errors, can be either short-lived (transient) or long-lived (solid). A transient error may, for example, be the result of a sudden fluctuation in the power supply or the result of a mechanical shock. Failure of a component, such as a vacuum tube or a transistor, may result in a solid error.

In the prior art, the occurrence of an error was usually handled without regard to the classification of the error as transient or solid. In one well-known prior art scheme, the detection of any error would completely stop the system. This resulted in an expensive non-usage of the system until corrective action could be taken by an operator (the corrective action often consisted of restarting the job from its very beginning), even though the error might have resulted from a transient condition which had disappeared. The problem of extensive loss of time due to the occasional necessity of restarting a job from its beginning led to another prior art technique known as program checkpointing wherein, at spaced intervals of time, all information necesary to restart the job from the time in its performance in which the checkpoint was taken would be read out to an auxiliary storage medium such as a magnetic tape or disk. This information generally included such things as: the total contents of the computer storage; the state of all computer status indicators; the identity of the last record of input data successfully processed (this had to be done for every unit which furnished input to the computer); and the identity of the last record of output data furnished by the computer to each output device. Then, if an error caused the system to stop, all parts of the system could be reset to the condition that they were in at the time the checkpoint was taken and processing could continue from that point. Although the technique of software (pro gram) checkpointing offered advantages when lengthy jobs were executed on a computer, it still had several drawbacks. For example, reinitializing the system to a previous checkpoint still resulted in a significant loss of time, and programmers were sometimes constrained by the requirement that lengthy programs be written in such a manner that checkpoints could be conveniently taken. Perhaps the most severe drawback of the software checkpointing technique was due to the fact that, even when no system errors were detected during the execution of a job (and this was true more often than not), an excessive amount of time and system resources were used in a non-productive manner in taking the unused checkpoints. Even in those cases where a system error necessitated the utilization of a checkpoint, previous checkpoints which were not used represented non-productive use of time and resources.

Another prior art scheme attempted to isolate transient errors by re-executing instructions during the course of which an error had been detected. If an instruction was recycled a predetermined number of times, the error would be classified as solid and the system would signal the operator that corrective action was necessary. If the error were only transient, the instruction would probably be repeated only once, after which it would have been successfullly executed, and no immediate corrective action would have been taken. However, due to the nature of program controlled systems, repetition of every instruction is not always wise. Instructions assume the existence of data within the system. However, the data may have been changed during the first unsuccessful attempt at executing the instruction. Then, if the instruction is repeated, it acts, not upon the assumed data, but upon the data as changed during the previous attempts at execution. Thus, indiscriminate recycling of instructions can result in computational errors, and the seriousness of these errors can become magnified as processing continues. Another prior art approach suspends execution of an instruction at the point at which an error condition occurs, and calls in a special program to analyze the instruction and the point at which the error occurred. The special program determines whether or not it would be safe to attempt to re-execute the instruction. One of the disadvantages of this scheme is that it always requires a program. to separate transient errors from solid errors.

o o 0,5ol

3 Also, a machine malfunction occurring during the running of the analysis program will, for all practical purposes, generally be uncorrectable.

Still another prior art technique eliminates some of the above disadvantages by providing, for each instruction, a signal during its execution indicating that the point has been reached after which point the instruction may not be repeated. If an error signal occurs before this point, the instruction is repeated immediately, no damage having occurred to the data in the system and no problem existing as to the generation of erroneous results due to repetition of the instruction. If the error occurs following the point after which the instruction cannot be repeated, the instruction is completed and a programmed analysis of the error is performed. Even with this technique, a system error, which occurred during the programmed analysis, would generally be uncorrectable.

It is an object of this invention to provide apparatus for keeping track of the function being executed by a data processing system in order to facilitate recovery from system errors.

It is a more particular object of the invention to provide apparatus which keeps track of the function which a central processing unit is currently executing.

Another object of the invention is to accomplish the above without affecting the time that it takes the data processing system to perform any given function during normal error-free operation.

In accordance with one aspect of the invention, the foregoing and other objects are accomplished by providing, within the Central Processing Unit (CPU) of a data processing system, an auxiliary register to indicate the present function which the CPU is executing. When the CPU begins to execute a new function, the information in the auxiliary register will be updated so that it is always current. A preferred embodiment of the invention may be utilized in an electronic digital computer which contains a sequence control unit such as a read only control storage (ROS) which controls execution of a stored program by controlling the gating of information within the CPU. The functions executed by the CPU are controlled by ROS words in accordance with instructions contained in the stored computer program. Updating of the auxiliary register is controlled by an additional field that is provided for each ROS word. This additional field is decoded to cause a special code to be gated into the auxiliary register to indicate the function that the ROS word is causing the CPU to execute. The information contained in the auxiliary register will facilitate recovery from system errors in the manner claimed in copending application Ser. No. 697,738 filed on Jan. 15, 1968 by Bruce L. McGilvray, Donald J. Lang, William E. Boehner and Mark W. Bee, entitled Data Processing System Execution Retry Control" and assigned to International Busi ness Machines Corporation, said copending application being incorporated herein and made a part hereof by this reference.

The foregoing and other objects, features and advantages of the invention will be apparent from the following more particular description of a preferred embodiment thereof, as illustrated in the accompanying drawings.

In the drawings:

FIG. 1 is a schematic block diagram of an environ mental data processing system wherein this invention may be used.

FIG. 2 is a diagram of the general organization of the sequence controls of the central processing unit.

FIG. 3 is a time chart of the timing circuit 306 in FIG. 2.

FIG. 4 is a schematic diagram of the organization of the main store.

FlG. 5 is a timing chart used to explain store and fetch operations relative to the main store in FIG. 4.

was

FIG. 6 is a schematic diagram illustrating the general organization of the local store.

FIG. 7 is a timing diagram used to explain the operation of the local store and to contrast the timing of said operation with the main store timing of FIG. 5.

FIG. 8a8f is a schematic block diagram showing elements that are added to the environmental system in accordance with a preferred embodiment of this invention.

FIG. 9 shows the various fields of a read only control storage data register (ROSDR).

FIG. 10 shows further details of retry control fields within a ROSDR.

INTRODUCTION In order to provide a basis for understanding this invention, various aspects of an environmental data processing system wherein the invention may be used will first be described. Details of the environmental system which are not necessary to an understanding of this invention will not be described herein. For a description of such details, reference is made to the following publications, the contents of which are by this reference incorporated herein: IBM System/360 Principles of Operation, Form A22-68215; System/360 Model 50 Comprehensive Introduction, Form 223-2821; Microprogramming Manual for the IBM System/360 Model 50, IBM Technical Report TRDt).1479-1.

Central processing system Referring to FIG. 1, there are shown several basic elements of an environmental digital computer system. The system comprises a read only control store (ROS) 300 with its associated address register (ROAR) 308 and data register (ROSDR) 310, a program status word (PSW) 51, a main storage unit 12, and a central processing unit. ROS, ROAR, ROSDR and PSW are elements of the central controls described hereinafter.

The central processing unit in FIG. 1 includes an adder 210 which receives an operand from the L register 126 and an operand from the R register 124, an M register 211 or an H register 212 through a gating network 213. The gating network 213 includes provision for complementing either of the operands, thereby affording the adder 210 the flexibility of adding or subtracting two operands. The output of the adder 210 is supplied through a shifter 215, and the output of the shifter may be shifted left or right 0, 1 or 4 places in any one CPU cycle. For a simple add or subtract operation, no shift takes place. Where multiply or divide operations are performed, the output of the adder 210 may be shifted one or more places. The output of the shifter 215 is supplied through a gating network 216 to a group of latches 217 labeled adder out bus latches (AOB LATCHES). The output of the AOB latches 217 is applied to a bus labeled AD- DER OUT BUS, and this bus supplies the output of the AOB latches to numerous destinations illustrated. The AOB latches 217 may be operated to supply data on the adder out bus to the storage data register 91, the storage address register 90, an instruction address (IA) register 218, the L register 126, the R register 124, the M register 211 and the H register 212. Information from the various sources in FIG. 1 have access to the added outbus through the gating arrangement 216 and the AOB latches 217. Information from the L register 126, the R register 124, the M register 211 and the H register 212 may be supplied through the adder 210 and the shifter 215 in order to gain access through the gating arrangement 216 and the AOB latches 217 to the adder outbus. It is pointed out that data may be supplied through the adder 210 without modification and through the shifter 215 without a shift in position. Thus information from the L register 126, the R register 124, the M register 211 or the H register 212 may be supplied intact through the adder 210, the shifter 215, the gating arrangement 216 and the AOB latches 217 to the adder out bus, and this information may be supplied on the adder outbus to the various destinations enumerated above. Information in the storage data register 91 may be transferred directly to the read only store address register 308. Thus, it is seen that maximum flexibility is provided in transferring data from one selected location to a given destination.

The instruction address register 218 holds signals representing the address in the main store 12 of instructions to be executed. The address signals in the instruction address register 218 are transferred to an Instruction Counter and Latches 219. As successive instructions are performed, the instruction address is incremented by circulating the contents of the IA register through the IA Counter and Latches and back to the IA register, thereby incrementing the value in the IA register. Each instruction is obtained by transferring the contents of the instruction address counter 219 to the storage address register 90, and the instruction at a specified address is read from the main store 12 and supplied to the storage data register 91. The instruction stored in the storage data register 91 is transferred through the gating arrangement 216, the ACE latches 217 and the adder out bus to the M register 211. The instruction in the M register 211 has an address portion which is supplied to a read only store address register (ROAR) 308 which in turn supplies the address signals to a read only store 300. The read only store 300 provides output signals representing microinstruction codes which are stored in a read only store data register 310, the output of which is utilized by apparatus not shown to provide timed signals to operate the overall system under microprogram control. A portion of the output from the read only store data register 310 and a portion of the program status word 51 are supplied to the read only store address register 308 to determine the appropriate address. Read only store 300 and its afiiliated controls are discussed more fully hereinafter.

Central controls Reference is made next to FIGS. 2 and 3 which show the central controls for the data processing system. The central controls include a capacitor read only store (ROS) 300 of the type described in an article entitled Read Only Memory" by C. E. Owen et al. on pages 47 and 48 of the IBM Technical Disclosure Bulletin, volume 5, No. 8, dated January 1963. The controls include a mode trigger 302, condition trigger 304, also known as STATS, and timing circuits 306. The timing circuits 306 produce five cyclic signals at the CPU frequency which are phased with respect to the zero time ref. erence of each CPU cycle as shown in FIG. 3.

Data in the read only store is addressed by a twelve-bit selection register (ROAR) 308. Address signals for the ROAR may be taken from various sources including a portion of the output control information from the read only store data register (ROSDR) 310 in each CPU cycle to select one of 2,816 ninety-hit control Words and to enter the same in the read only storage data register 310. Each word, known as a microinstruction, is transferred into the read only store data register 310 at SENSE STROBE time which occurs just prior to the start of the next CPU cycle, and it controls the operation of the central processing unit during the next cycle.

The state of the read only store address register 308 is determined prior to the Drive Array pulse (FIG. 3) and controls the state of the read only store data register 310 at the following SENSE STROBE time. Thus, each entry into the read only store address register 308 usually controls the activity of the CPU in the next consecutive CPU cycle following the entry.

Each entry into the ROAR is determined in one of several different ways by the inputs presented to gates 312 through a network of OR gates 314. Ordinarily the 12- bits presented to the OR net work 314 are derived selectively through gates 316 from one or more sources including: a segment of the ROSDR, and output condi- 6 tions registered by selected conditions STATS 304 selected program branching information (program instruction operation codes).

The preceding discussion has presumed that the mode latch 302 is set to CPU mode and that CPU operation has not been interrupted by any input-output (I/O) units. Requests from I/O units are recognized by receipt of a Routine Received (RTNE RCVD) signal. It may be seen from the inputs to the AND gate 331 in FIG. 2 that, if the CPU is in the CPU mode when a RTNE RCVD signal is received, the mode latch 302 is not set to the I/O mode until SET REG time of the cycle following the rise of RTNE RCVD. This permits the CPU to complete execution of the current microinstruction. If the CPU mode is up when the RTNE RCVD signal is received, the AND gate 333 is operated to provide an output level which is up, and this level inhibits the AND circuit 332, thereby suppressing the SENSE STROBE signal of sense gates 334 which normally supply input signals to the read only storage data register 310 from the read only store 300. This will permit the I/O request to be serviced in the manner described and claimed in copending application Ser. No. 573,246, filed Aug. 18, 1966 for IMPROVED PRO- GRAM SUSPENSION SYSTEM by Matthew A. Krygowski and Thomas S. Stafford, said application being assigned to International Business Machines Corporation. Said application Ser. No. $73,246 is incorporated herein and made a part hereof by this reference.

Main store Reference is made next to FIGS. 4 and 5 which illustrate in more detail the main store 12, shown in block form in FIG. 1. FIG. 4 illustrates the system arrangement of the main store, and FIG. 5 illustrates the timing relationships involved. Referring more specifically to FIG. 4, gates 71 through 78 control the flow of information throughout the subsystem. The main store 12 is preferably a matrix array of magnetic cores, and a given address in the array is selected by signals in the storage address register (SAR). Address signals are supplied to the storage address register (SAR) 90 through a set of gates 71. The main store 12 has internal timing controls which respond to a start signal from the central processing unit, and the main store then is operated through its basic memory cycle to read information on output sense lines to a set of gates 72 from the selected address indicated by the storage address register. Information passed by the gates 72 is stored in a storage data register (SDR) 91. The data in the storage data register may be reinserted in the main store by passing it through the set of gates 73, and the data in the storage data register may be supplied through the gates 78 to the central processing unit and through further gates 77 to [/0 units. Whenever a fetch operation is performed, the gates 72 and 74 are operated to transfer the information from the selected address of the memory array to the storage data register 91, and the information thus read is reinserted through the gates 73 back to the selected address of the array during a WRITE portion of the memory cycle. When a WRITE operation of new data takes place, the gates 72 and 74 are not operated, and the data read from the selected array is thereby lost. New data to be written into the selected address is inserted into the storage data register 91 through the gates 75 from the central processing unit or through the gates 75 and 76 from I/O units. The new data is passed through the gates 73 to the selected address of the memory array during the WRITE portion of the memory cycle.

The main store 12 in FIG. 4 has a memory cycle which is equal to four machine cycles of the central processing unit. As illustrated in FIG. 5, each cycle of the main store coincides with. four cycles of the central processing unit. A memory cycle is initiated by a START MS signal from the central processing unit, and during the first CPU cycle the SET SAR causes the gates 71 to pass address signals to the storage address register in FIG. 4. During the lirst half of the memory cycle, signals Rt and R2 are generated as shown in MG. 5. During the terminal half of the memory cycle the signals W1 and W2 are generated as depicted in FIG. 5. During the time of R1 and R2 the main store performs a read operation, and during the time of W1 and one cycle of W2 (noting that W2 persists indefinitely until a new cycle of the main store is started), the main store performs a WRITE operation, thereby reinserting in the selected address of the main store the same data read or inserting new data, as the case may be. The internal timing controls of the main store are indicated by the block 92 in FIG. 4. The START MS signal is received on a line 93 whenever the main store is to perform a memory cycle. In response to the START MS signal, signals are generated on the lines labeled R1, R2, W1 and W2 at the times indiciatecl in FIG. 5.

In a fetch operation, signals on the sense lines of the main store MS are gated into the storage data register 91 during the R half cycle, and the contents of the storage data register are transferred to the selected internal location of the main store during the W half cycle. Thus, the fetched information transferred into the storage data register is available for read out to circuits external to the main store, and this information is regeneratively returned to the same place in storage, if it is not to be replaced with new information. In a store operation the information appearing on the sense lines from the main store is blocked, and other information is transferred through an external bus 94 in FIG. 4 to the storage data register during the R half cycle to the main store. Thereafter during the succeeding W half cycle the new information in the storage data register is transferred to the internal location selected by the storage address register 90.

Local store Reference is made next to FIGS. 6 and 7 which show the respective system arrangement of the local store and the timing relationship of its memory cycle. Referring more specifically to FIG. 6, there is shown a more detailed system arrangement of the local store which is depicted in block form in FIG. 1. The local store has 64 registers with each register capable of holding one word. A local storage address register (LSAR) 120 holds address signals representing a given one of the 64 registers, and address signals are supplied to the local storage address register through a set of gates 121. Whenever a READ operation is performed, information from the selected address of the local store is supplied through a set of gates 122. The signals passed by these gates are supplied through a set of gates 123 to an R register 124 or through a set of gates 125 to an L register 126. The output of the L register or the output of the R register may be supplied to an arithmetic device or adder as has been described above. The output of the R register may be passed by a set of gates 140 and a set of gates 141 to the local store. The output of the L register may be supplied through a set of gates 142 and a set of gates 141 to the local store. Information may be supplied from the bus 94 to the L register and the R register through respective sets of gates 143 and 144.

The local store operates in a manner similar to the main store except that its cycle of operation is equal in duration to one machine cycle of the central processing unit. Also, there is more freedom of choice in the selection of information to be processed during the WRITE half cycle as pointed out more fully hereinafter. In the READ half cycle, information may be transferred from a selected address specified by the local storage address register 120 to one of the two buffer registers, the L register or the R register. In the WRITE half cycle the information in either the L register or the R register may be selectively transferred to the selected address of the local store. While information is being stored into the local store during a WRITE operation (i.e. in the second quarter of the next CPU cycle), the information prcviously carried from the sense lines into the L or the R registers may be progressively moved out to the CPU adder and from there to I/O units. Conversely, during the READ half cycle of the local store information signals propagating from N0 units toward the L or R registers may be progressively continued on their way during the subsequent WRITE half cycle of the local store 13.

The local store has a memory cycle of one-half microsecond. The memory cycle is equal in time duration to a machine cycle of the central processing unit, but the memory cycle is shifted timewise by 180 degrees with respect to the CPU cycle. This is readily seen in FIG. 7 by comparing the CPU cycle at the top of the diagram with the LS memory cycle at the bottom of the diagram. A START LS signal initiates a memory cycle of the local store, and as illustrated in FIG. 7 it commences at the mid-point of a CPU cycle. Address signals are set in the local store address register 120 in FIG. 6 during the initial phase of a memory cycle as indicated in FIG. 7. The READ portion of a memory cycle occupies of the memory cycle with the mid-point of the READ portion of the cycle coinciding in time with the mid-point of the memory cycle, as shown in FIG. 7. The WRITE phase occurs during the last 25% of a memory cycle as depicted in FIG. 7. Ingating to the L register, R register and other CPU registers takes place, as indicated in FIG. 7, during the latter half of the READ phase of a memory cycle.

RETRY In striving for retriability of a function during the execution of which an error was detected, there are seven basic aspects which are considered herein: first, a record must be made of the function which was being executed at the time that the error was detected; second, residual effects of the error (such as the presence in a register of a word with incorrect parity) must be cleared up to prevent them from causing further error indications; third, certain condition and status indicators within the device must be restored to the state that they were in at a previous point in time when the device Was known to be in an error-free state; fourth, all source data (i.e., all information within the system which was used as input information for the function to be retried) that may have been changed since the beginning of the previous unsuccessful attempt to execute the function must be made available in the condition it was in at said previous errorfree state; fifth, retry of the function will be attempted; sixth, it is important that any apparatus used to accomplish the above should not degrade system performance when the data processing machine is running in the normal error-free condition; and seventh, retry itself should be retriable.

In general, the prior art approaches to retry have either ignored the problems involved in restoring changed conditions and status indicators and changed source data or they have utilized complex and time consuming software (i.e., programming) techniques for performing the restoration. Additionally, many of the software techniques for retry do degrade normal system performance and are not themselves retriable.

When this invention is made a part of a data processing system, the seven aspects enumerated above are accomplished by the hardware of the system itself without the necessity of resorting to software. In fact, if an intermittent erroneous condition of the system causes an error to be detected, the system hardware will correct the error so rapidly that the programmer may be completely unaware that a system error has occurred. (Of course, the system can be caused to maintain a record of such errors for future diagnostic use.) The speed with which the system hardware corrects transient errors is so great that, in oder to add even a minute to the total processing time of a job, several million intermittent errors would have to have occurred.

Various details of a preferred embodiment of this invention will be described below. The description will be primarily with respect to FIGS. 8a through 8f (hereinafter referred to collectively as FIG. 8). FIG. 8 shows elements that are added to the basic environmental system by this invention. The figure also shows certain elements of the basic prior art system that are illustrated in FIG. 1 and were discussed with respect thereto. Elements that are common to both FIG. 1 and FIG. 8 have common reference numerals. Although the various elements shown in FIG. 8 may appear to be lacking in connection between them, it must be realized that all of the elements and interconnections therebetween that are shown in FIG. 1 are also implied in FIG. 8.

In order to completely understand the background of this invention and the exemplary prior art system in connection with which this preferred embodiment is described, reference is again made to the publications IBM System/360 Principles of Operation" and Microprogramming Manual for the IBM System/360 Model 50, said publications having already been incorporated herein by reference.

Function indicator As was mentioned above, the first basic consideration in any retry procedure is the preservation of an indication of the function that was being performed at the time that an error was detected. Before providing an operational definition of the term function, it will be convenient to first define the terms instruction" and operation. An operation is herein defined as any step or steps that can be performed by a computer in one CPU cycle. In the environmental system herein described, an operation may also be defined to be the equivalent of the responses of the computer system to a single Word of the read only control store. An instruction is defined as any sequence of operations which accomplish a given result. Examples of instructions are: add; subtract; multiply; divide; branch unconditionally; branch if a given condition is true; transfer information from a specified register to storage; AND two words together; etc. ,(For example, the instruction" MULTIPLY may be performed by an iteration of the operations" ADD and SHIFT; etc.) A function can now be defined as a class of sequences of operations which can be successfully retried by a common retry control and which are characterized by their use of a common initial sequence control. The controls necessary to retry a given instruction depend upon the function (i.e., sequence of operations) that was being performed at the time that an error was detected. This is significant because more than one function may be performed during the execution of a single instruction.

In the case of the preferred embodiment herein implemented on an exemplary environmental system, we may consider four basic functions: Load; Wait; Status Fetch; and Normal. The system enters the Load function at the end of an input/output (I/O) routine when the channel turns control over to the CPU for the CPU to store status indicators. The system is regarded as entering the Wait function when entering the wait state or the halt state (discussed for example at pages 68 et seq. and 90 et seq. respectively, of the publication IBM System/360 Principles of Operation," said publication already having been incorporated herein by reference) or when taking an external timer or 1/0 interrupt. The system is regarded as entering the Status Fetch function at the start of fetching a new status word during status switching. The system is regarded as entering its Normal function at the completion of either status switching or instruction execution.

From the above definitions of four functions, it will be clear to those skilled in the art that, in general, each of the functions would be controlled by a different portion of the sequence controls of a computer system.

Referring now to FIG. 8e, there is shown a read only storage data. register (ROSDR) 310 with associated ROSDR decoders 25 and 26. In the prior art environmental system each read only control storage (ROS) word contained ninety bits of information and the ROSDR was ninety bit positions in length (i.e., bit positions 0-89). The decoder 25 is used to decode the first ninety positions of ROSDR. In a preferred embodiment of this invention each ROS word contains ten additional bits of information (bit positions 99) and the ROSDR 310 is expanded to be a position register. The decoder 26 is added in order to decode the additional ROSDR positions. In order to maintain a current record of the function that is being executed by the CPU, a function indicator 27 is provided. In the preferred embodiment described herein, the function indicator 27 comprises a storage register consisting of four latches. The function indicator has four inputs, one for each of the latches. Each of the inputs can be gated to the function indicator by the output of the decoder 26 when it decodes an appropriate micro-order which has been gated into ROSDR 310 from the ROS. Each word in ROS that contains a micro-order which would cause the CPU to begin performing a new function will also contain, within bit positions 9099 a micro-order which will cause a representation of the appropriate function to be gated into the function indicator. Setting the function indicator 27 to indicate a new function should be delayed by a delay means 43 in order to allow sufficient time for the error checking circuitry of the system to make sure that the previous function had been correctly executed. This precaution is desirable because an error that occurred during an attempt to execute one function might not be detected until after the beginning of execution of the next function. If this situation should arise, it will have prevented the function indicator 27 from being changed, and the system will be able to identify the function that was not correctly executed. Thus, the function indicator 27 will be updated to contain an indication of the function currently being performed by the CPU.

As will be well understood by those skilled in the art, in one embodiment of a four-latch indicator as described above, each input to the function indicator will control the setting of one of the latches. Thus, in order to set all of the latches to represent a given function, the decoder 26 will generally be required to furnish a signal to a gate on the input line that controls each latch. Since each function is indicated by a specified condition of all of the latches, all four gates of a four-latch indicator would have to be conditioned by the decoder 26 in order to set a function indication. In FIG. 8e the function indicator 27 has been shown as having one gated input for each function that may occur. It will, however, be recognized that FIG. 8 presents a simplified representation of the function indicator 27 and its controls, and that the above description presents a more accurate description of an exemplary implementation of the function indicator.

It is also noted that the preferred embodiment of the function indicator uses four latches despite the fact that such an implementation is capable of representing sixtcen distinct states while, in the exemplary environmental system herein disclosed, only four different functions need be indicated. Utilization of a function indicator which is capable of having a larger number of states than there are functions yields two primary advantages. First, it is a simple and inexpensive way of detecting erroneous settings of the function indicator (due, for example, to a faulty latch). Second, it will facilitate an expansion of the number of functions which the system can perform and which might need to be retired.

Additional details that may be necessary for implementntion of the function indicator and the manner in which it is set by its associated controls are well known in the art and are discussed, for example, in the two refcrcnces previously cited in this section.

1 1 Referring to HG. 9, the read only storage data register is shown and its various control fields are identified. The function of each of the various ROSDR fields is identified in the following table.

Function of iield Parity of hits (1-39.

Left input to mover.

Right input to mover.

Bits U-5 of next ROS address.

Source of bits 6 3 of the next R S address or function brunch control.

Address control lield.

Destination of adder latch contents.

.24 Spare.

Source of local storage address.

Local storage function.

31 Purity of bits 32-55. 32-34 invalid digit test and instruction address register control. 35*3') Shift control and gating into adder latch. -43 Mover destination. 44*15 Btye counter function control.

46 MI) counter control. 47 LB counter control. 48 MB counter control. 49-5! Length counter and carry insertion control. 52-53 Mover function-left digit. 54*55 Mover function-right digit.

56 Purit y of bits 57 8ti. 57-ti0 Emit field (used as data). til-63 Left input to adder.

6t 'Iruejeomplement control of left adder input. 65%? Right input to adder. 6841 Adder function. 72- 1? Condition branch test A (furnishes bit it] of next ROS address). 78-82 Condition branch test B (furnishes bit ll of next ROS address). 83 Spare. 84-89 Stat setting and miscellaneous control. 90-9) Retry controls.

FIG. 10 shows the function of the three ROSDR fields that are contained in the added positions 90-99 of ROSDR. Because each of these new fields can be decoded in either of two modes (CPU Mode or Retry Mode), each field can serve two functions. This aspect of the added fields will be described in more detail hereinafter.

Further details of the manner in which the above fields may be used to control the environmental system are described in said Microprogramming Manual for the IBM System/360 Model 50, particularly at pages 26-36. The operations to be controlled by the retry control field are further described hereinafter.

Retry controls As has already been described, in order for instruction retry to be practical, it will often be necessary to save source data that may have been destroyed between the time that execution of an instruction was initiated and the time that an error was detected. The term source data" refers to all information (such as operands and status and control indicators) upon which the function acts or upon which the function may depend for complete control of its execution. (It will. of course, be understood that a function will often be an "instruction.)

In order to know what source data must be saved, the various instructions which can be performed by the computer system must first be analyzed. Various groups of the instructions which can be performed by the environmental system will be discussed below only to the extent to which they affect this invention. For further information about the instructions, see IBM System/360 Principles of Operation said publication having already been incorporated herein by reference.

BRANCH, COMPARE AND RR LOAD INSTRUCTIONS Execution of these instructions destroys no source operand fields. The source data necessary to retry these instructions comprises the instruction address, and the condition codes upon which some of the instructions may depend for their execution.

12 RR, RX, RS (single-word operand) This group of instructions includes the AND, the OR, the EXCLUSIVE OR, and the ADD and SUB- TRACT instructions. These instructions take first and second operands, compute, and store the results into the address previously occupied by operand 1 of local store. If an error is detected after the result is stored, the instruction cannot be retried until operand 1 has been restored to its previous condition. The address of the instruction will also be needed.

RR, RX, RS (double-word operand) Also included within this major class of instructions are all of the FLOATING POINT, all of the SHIFT DOUBLE and some MULTIPLY and some DIVlDE instructions. Before the time that an error is detected in the execution of one of these instructions, two words of local store source data may have been destroyed. Both of the source data words must then be restored before retry. The address of the instruction will also need to be restored.

In the environmental system herein disclosed, this group of instructions includes only the three instructions AND, OR and EXCLUSIVE OR. When an error is detected during the execution of one of these instructions, a source operand in main store may have already been destroyed. One way of retrying the instruction would be to save the address of the operand that was destroyed as well as the operand itself, restore them both, and then retry. In the preferred embodiment herein described, the operand address need not be saved because, on retry, the saved operand itself is used instead of the operand word in storage. However, the address of the instruction will still be needed.

This group of instructions, in the environmental system herein described, includes eight of the decimal instructions. By the time an error is detected, up to sixteen bytes of source operand may have been destroyed. Although there are only four bytes per storage word, the source operand that was destroyed might have been distributed over as many as five words. For example, the source operand thatw as destroyed might have consisted of one byte of a first word, all of a second, third and a fourth word, and three bytes of a fifth word. Further details about these instructions, and about the precise manner in which the required number of words of main store source data are saved and, if an error is detected, restored to main store, are found in application Ser. No. 697,740 filed on Jan. 15, 1968 for Instruction Retry Apparauts Including Means for Restoring the Original Contents of Altered Source Operands by D. L. Schnabel and A. D. Snyder and assigned to International Business Machines Corporaiion. Said copending application is incorporated herein and made a part hereof by this reference. In addition to the above, the address of the instruction will be needed.

SS VARIABLE FIELD LENGTH By the time that an error is detected during the execution of one of these instructions, up to 256 bytes of source operand could have been changed. The apparatus described in the last-mentioned copending patent application may be used to restore the source operand. However, a better technique for saving variable field length source data is shown in copending application Ser. No. 698,595, Instruction Retry Byte Counter filed on Jan. 17, 1968 by D. I. Lang et al. and assigned to International Business Machines Corporation. In addition, the instruction address and system status and control indicators will need to be saved.

Input/output instructions are retriable by the apparatus herein described up to a threshold, and from that point on must be re-executed through the use of intervening software (because of the possible necessity of physical movement to restore such I/O devices as magnetic tape drives, card readers, etc.). However, even when additional software is used for retry of input/output instructions, this apparatus will make available to the software a valid unit address, a command address and a position code for use in the retry procedure. For further details with respect to I/O instructions, reference is made to copending application Ser. No. 697,797 filed Jan. 15, 1968 and assigned to International Business Machines Corporation, said copending application being incorporated herein and made a part hereof by this reference.

Referring to FIGS. 811-81, there are shown various elements which must be added to the environmental system of FIG. 1 in order to accomplish instruction retry. It will be recognized by those skilled in the art that the elements shown in FIGS. 8a8e are connected by the data paths that were previously described in connection with FIG. 1. The elements shown in FIG. 8 are in data paths that have been added for purposes of retry control. FIGS. Sci-8f will be collectively referred to hereinafter as FIG. 8. In FIG. 8, many of the lines which represent data flow between various elements of the system have short perpendicular lines drawn across them. These perpendicular lines represent gates which are used to control the transfer of information between elements of the system. All of the gates shown in FIG. 8 are conditioned by the retry controls with the exception of gate 42 (FIG. 8e) about which more will be said hereinafter.

In order to save the address of an instruction which might have to be retried, a supplemental (backup) instruction address register 29 is provided. Another address which may be needed for restoration of source data and/ or retry of the instruction is the local store address which was contained in the local store address register (LSAR) 120, and which may have been destroyed before an error was detected. In order to save the local store address, an LSAR backup register 33 is provided. In the event that it becomes necessary to restore data into local store (LS) 13, an LS buffer 41 is also provided. In the environmental system herein described, the LS buffer 32 need be only one word in length. For restoration of data into the main store (MS) 12, a storage data register (SDR) backup 32 is provided. If it becomes necessary to restore in MS 12 source data, apparatus 31 which comprises a stack buffer and means indicating where in the stack butfer various words have been stored will be used. Further details of the apparatus 31 are disclosed in previously referenced application Ser. No. 697,740 filed Ian. 15, 1968 for In- A struction Retry Apparatus Including Means for Restoring the Original Contents of Altered Source Operands" by D. L. Schnabel and A. D. Snyder and assigned to International Business Machines Corporation. In order to save machine status indications upon which an instruction to be retried must relay, a condition code (CC) backup register 34 is provided. In the environmental system herein described, the CC comprises bit positions 34 and 35 of the PSW 51. In order that the smallest possible number of extra bit positions be added to ROS and ROSDR, it is desirable that micro-instructions contained in the added ROS and ROSDR fields be susceptible to being decoded to perform different operations at different times. To enable accomplishing this, a retry latch 28 which can be set and reset by the output of the ROSDR decoder 26 is provided. The output of the retry latch 28 will, after a suitable delay, be used to indicate the mode, (i.e., CPU mode or retry mode) in which the system is running and will influence the manner in which microinstructions are decoded. This is shown in FIG. 8:; in a symbolic manner by feeding the output of the retry latch 28 to the input of the ROSDR decoder 26. It is noted here that the retry latch may be set by the decoder 26 even when no error condition exists. This may be done whenever it becomes desirable to activate the alternative decoding mode of decoder 26. In order to keep track of whether or not, at the time that an error was detected, information was being regenerated back into local store or into main store, a local store regeneration trigger 35 and a main store regeneration trigger 36 are provided. In case it is desirable to inhibit retry and take a normal Machine Check Interrupt (MCI) under certain conditions, a MCI trigger 37 is provided. The MCI trigger 37 may be set and reset, and tested by the microinstructions that have been added for retry control. Since source data need not be restored unless it has actually been changed before an error was detected, a main store source data change (MS SDC) trigger 38 and a local store SDC trigger 39 are also included. The SDC trigger 38 or 38 will be set by the output of the ROSDR decoder 26 when source data is changed during the execution of an instruction. The SDC triggers will be reset at the beginning of the execution of any instruction. Because even solid errors will initiate an attempt to retry an instruction, it is desirable to have an error counter 44 and an Nth error trigger 40 to indicate that retry of an instruction has been attempted a predetermined number (N) of times. After retry has been attempted N times the error will be assumed to be a solid error, and a Machine Check Interrupt will normally be taken. Also added in the preferred embodiment of this invention is an inhibit gate 42 at the output of the ROSDR 310. In the event that an error is detected, the gate 42 will serve as part of the means used to force the retry controls to assume control of the data processing system. In the environmental system, errors are detected only at a specific time in the CPU cycle by an Error Sample sig- 11:11 (see FIG. 3) which queries the various error latches. For this reason, an error which may have occurred late in the CPU cycle will not be detected until the following cycle. In order for the retry controls to be effective, means must be provided to enable the retry controls to save source data (and retain an indication of a function) until such time as the previous function is known to have been successfully completed. In the preferred embodiment herein described, said means comprises a delay 43 at the output of the decoder 26. Delay 43 delays the output of decoder 26 from taking effect until all errors that may have occurred during the previous CPU cycle have been detected.

OPERATION In general The existence of a machine error (which may have occurred during a previous CPU cycle), if one has occurred, will be detected slightly more than half way through a CPU cycle when an Error Sample signal (see FIG. 3) queries the various error latches of the system. In the environmental system, this signal is produced after slightly more than half of a CPU cycle has been completed. If any machine malfunctions have occurred an ERROR signal will come up. The ERROR signal will be used to turn control of the data processing machine over to the retry control system. In the preferred embodiment described herein, the basic retry controls are implemented in a read only control store (ROS) beginning at ROS location zero. In order to force the machine to take its next command from ROS location zero, the ERROR signal is fed to an inhibit gate 42 (FIG. 82) to prevent the contents of ROSDR 310 from reaching the ROSDR decoders 25 and 26. The ERROR signal also stops the running of the CPU clock for one CPU cycle. Thus, during the CPU cycle following the detection of an error no information will be gated to the ROS address register (ROAR). This no information condition will be interpreted by ROAR as being the equivalent of all zeros, and this will cause the word located at ROS address zero to be gated into the ROSDR to cause the retry controls to take control of the system. In the preferred embodiment of the invention, the ERROR signal is also utilized to set the retry latch 28 to condition the decoder 26 to decode micro-instructions in the retry mode, and the ERROR signal is also used to increment the error counter 39 (FIG. 8f). The retry controls will then test the machine check interrupt (MCI) trigger 37 and the Nth error trigger 40 to see if either has been set. These tests may be performed in the same manner that is normally used in the prior art to test the setting of various triggers. The MCI trigger will have been set, if for some reason, retry is not desired; the Nth error trigger will have been set to signal the presence of a solid error condition if retry of the function during the execution of which an error had been detected had been attempted N times. If either of these triggers is set, a machine check interrupt will be taken in the manner normally used by the prior art environmental system.

The retry controls will then eliminate various residual effects that may have been caused by the detected error. During the time that this is being done, it will generally be desirable to disregard data error indications (caused, for example, by bad data presently in a register) and to prevent I/O requests from breaking in. This is accomplished by setting an ignore error trigger that exists in the prior art environmental system and using the output of retry latch 28 to inhibit I/O break-in (see application Ser. No. 573,246 for further details regarding I/O breakin). The H, L, M and R registers are then cleared to remove any erroneous data that may be in them. After this point, the ignore error trigger is turned off in order to permit future error indications to restart the retry controls and a memory cycle is started. If the detected error occurred during a memory cycle, the main storage regeneration (MS REGEN) trigger 36 will have been set. If the trigger is not on, the retry controls will reset the storage address register (SAR) 90 (FIG. I). If the trigger is on, the word in the storage data backup register 32 (FIG. 8b) will be written back into main storage. Any future error conditions that are sensed by the data processing system will cause the above steps (i.e., set retry latch, increment error counter, take next control word from ROS location zero, etc.) to be redone. This ability of the retry control system to re-enter" itself from points within itself is one of the significant advantages of this retry control system. It is this feature which enables this retry control system to overcome the effects of machine malfunctions which may occur while the retry control system is in control of the data processing system, and this feature also provides the ability to overcome the effects of error conditions which, although transient, may exist for several machine cycles. Only after retry of a machine function during the execution of which an error was detected has been attempted a predetermined number (N) of times, will the error be classified as solid and a machine check interrupt be taken.

The next step to be performed by the retry controls will be interrogation of the local store regeneration (LS REGEN) trigger to see if the detected error occurred during a local store cycle. If the LS REGEN trigger 35 is set, the local storage word that has been saved in the LS buffer 41 will be gated to the R register 124, from where it will be regenerated into local store 13 (FIG. Be).

Up until this point, the retry controls perform the steps enumerated above irrespective of the function that the system was attempting to execute at the time that an error was detected. Following this point, the steps to be taken by the retry controls will depend upon the function that was being executed at the time that an error was detected. As has been described above under the heading Function Indicator, there are four functions of concern in this environmental system: Load; Wait; Status Fetch; and Normal. The retry controls will test the function indicator 27 to determine which function was in the process of execution. The following four paragraphs describe the operations performed by the retry controls depending upon the function specified by the function indicator.

Normal function If the function indicator 27 is set to Normal, the retry controls will query the local store source data change (LS SDC) trigger 39 to determine whether or not any source operands contained in local store 13 have been changed. If the LS SDC trigger is set, the local store source operands will be restored from the stack buffer 31 (FIG. 812). For a preferred embodiment of apparatus to accomplish the restoration, reference is again made to copending application Ser. No. 697,740 filed Jan. 15, 1968 for Instruction Retry Apparatus Including Means for Rcstoring the Original Contents of Altered Source Operands by D. L. Schnabel and A. D. Snyder and assigned to International Business Machines Corporation. After restoring source operands to the local store (or immediately after testing the LS SDC trigger 39, if the trigger was olf) the retry controls will cause the address of the original instruction to be gated from the instruction address backup register 29 to the instruction address register 218 (FIG. 8a) and will cause the saved condition code (CC) contained in the CC backup register 34 to be gated t0 bit positions 34 and 35 of the program status word (PSW) 51 (FIG. 8d). The retry controls will then reset the retry latch 28 and return control of the data processing system to that portion of the CPU which will refetch and attempt to execute the instruction specified in the instruction address (IA) register 218. This will be the same instruction that the system tried to execute previously. The manner in which instructions are fetched, decoded and executed by the environmental system is described in the various ref erences that have been cited above and need not be described herein.

Status Fetch function If an error was detected during an attempt to fetch a new PSW, the address of the new PSW will have been stored in location 2 of local store 13. The retry controls will access the address of the new PSW, reset the retry latch 28, and fetch and load the new PSW. The retry controls will then, because the function has now been completed, set the function indicator 27 to Normal, reset the triggers 35-38, and reset the error counter 39 to zero. Control of the system will then be returned to the CPU to fetch the instruction specified by the PSW, the address of which is in the IA register 218.

Wait function When the Wait function is indicated by the function indicator 27, the retry controls will first restore the previous contents of the IA register 218 and the CC bits of the PSW 51 from their respective backup registers 29 and 34 and then reset the retry latch 28. The function indicator 27 will be set to its Wait indication, the triggers 2539 will be reset, the error counter 44 will be reset and control of the data processing system will be returned to the CPU.

Load function The function indicator 27 was set to Load at the end of the standard I/O load routine at the time where the channel stores data into the L, R and M registers and turns control over to the CPU for the CPU to store the status in the PSW. At the same time that status was being stored into the L, R and M registers, it was also being stored in the stacks 31. If the Load function is indicated, the retry controls will cause the status information in the stack 31 to be restored into the L, R and M registers. The previous contents of IA register 218 and the CC bits of the PSW will be restored from their respective backup registers 29 (FIG. 8a) and 34 (FIG. 8d). The retry latch 28 will then be reset. Control of the data processing system will then be returned to the CPU for retry of the Load function.

In the above description of retry of various functions performed by the environmental system, no attempt has been made to dissect the retry of each individual instruction that may be performed by the data processing system. As is well known to those skilled in the art, different data processing systems often utilize different instruction sets which can be divided into different functional groups. However, the above description of the operation of the hardware of which this preferred embodiment is comprised, when added to the ordinary background knowledge of the data processing system design art, will be sufiicient to teach those skilled in the art to implement this invention on a variety of data processing systems.

In the above descriptions of the steps that are performed under retry control, it was assumed that no error conditions interrupted the sequential performance of the steps above specified. However, it is significant to note that, if any error condition had arisen during the performance of the above steps, the steps of retry control would have been reinitiated from the beginning. Thus, the retry control system can be entered from any part of the CPU and from itself. The ability to recover from errors that are detected while the retry controls are in control of the data processing system is one very significant advantage of this invention.

It will of course be recognized by those skilled in the art that various modifications may be made to the preferred embodiments of the invention as described above without departing from the spirit and scope of this invention. For example, the invention could be used on a conventional sequential-logic" data processing machine which does not have within it a read only control storage. Such an implementation would generally require an expansion of the control logic of the computer. This expansion would be necessary in order to provide means for saving all of the information that might be required for retry without affecting the normal error-free operation of the computer. In order for the saving of source data not to effect system performance, it must be done in parallel with the normal operation of the machine. It is this requirement that will make it necessary to expand the machines control logic. Upon detection of an error, the machine could use conventional interrupt techniques to enter a retry mode and perform all restoration steps that may be necessary for retry of the function during the execution of which the error was detected.

While the invention has been particularly shown and described with reference to a preferred embodiment thereof, it will be understood by those skilled in the art that the foregoing and other changes in form and details may be made therein without departing from the spirit and scope of the invention.

What is claimed is:

1. In a data processing system including a central processing unit, a main storage unit and a sequence control unit, said system being operative to perform a plurality of functions, each function being characterized by a particular initial state of said sequence control unit; a function indicator comprising:

selectively operable means to generate a signal uniquely representing the particular initial state of said sequence control unit which characterizes a function being performed;

auxiliary storage means to store a representation of a signal;

control means coupled between said auxiliary storage means and said selectively operable means for causing said auxiliary storage means to store a unique representation of said generated signal; and

means coupled to said control means to prevent storage by said auxiliary storage means of said representation of said generated signal for a predetermined period of time.

2. The function indicator of claim 1 wherein:

said auxiliary storage means is capable of assuming a number of discrete states equal to at least twice the number of functions which can be performed by said data processing system.

3. The function indicator of claim 1 wherein:

said means coupled to said control means comprises delay means connected within said control means so as to delay storage of said representation of said generated signal for said predetermined period of time.

4. The function indicator of claim 1 additionally comprising;

means connecting said selectively operable means to said sequence control unit;

said generated signal being generated by said selectively operable means in response to the particular initial state of said sequence control unit which characterizes a function being performed.

5. In a data processing system including a central processing unit, a main storage unit and sequence controls, said system being operative to perform a plurality of functions, each function being characterized by a partic ular initial state of said sequence controls, said system also including error detection means to detect the occurrence of an error during the performance of a function, said error detection means, in certain circumstances, detecting an error after a function has been performed; a functiin indicator comprising:

means responsive to the particular initial state of said sequence controls which characterizes a function being performed to produce a signal representing the function characterized thereby;

auxiliary storage means capable of storing a number of different signals, said number being at least as large as the number of different functions that can be performed by said data processing system;

control means coupling said produced signal to said auxiliary storage means to cause said auxiliary storage means to store a unique representation of said produced signal;

said control means including delay means to prevent said auxiliary storage means from storing said unique representation of said produced signal until a time subsequent to the time that said error detection means would have detected any error which might have occurred during the performance by the data processing system of a function performed immediately prior to the function characterized by the current state of said sequence controls.

References Cited UNITED STATES PATENTS 2,941,188 6/1960 Flechtner et al. 340172.5 X 2,972,127 2/1961 Lukoff et al. 340l72.5 3,324,460 6/1967 Leonard et al. 340172.5 3,422,406 1/1969 Stahle 340-1725 OTHER REFERENCES IBM Technical Disclosure Bulletin, Stringfellow et al., Maintenance Scanner, vol. 3, No. 12, May 1961, pp. 19-20.

IBM Technical Disclosure Bulletin, Pulse-Width Code Normalization, by Cutaia, vol. 9, No. 7, December 1966, pp. 800-801.

P. R. WOODS, Assistant Examiner PAUL J. HENON, Primary Examiner 

